home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / intuisup.lha / Intuisup / source.lha / Library / library_test.c < prev    next >
C/C++ Source or Header  |  1992-08-06  |  28KB  |  829 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: library_test.c
  6.  *    Created ..: Sunday 22-Dec-91 20:35:01
  7.  *    Revision .: 1
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    06-Aug-92   Torsten Jürgeleit      list view gadget with flag
  12.  *                       GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR
  13.  *    22-Dec-91   Torsten Jürgeleit      Created this file!
  14.  *
  15.  ****************************************************************************
  16.  *
  17.  *    Test for IntuiSup library
  18.  *
  19.  * $Revision Header ********************************************************/
  20.  
  21.     /* Includes */
  22.  
  23. #include <exec/types.h>
  24. #include <exec/memory.h>
  25. #include <graphics/gfxbase.h>
  26. #include <graphics/text.h>
  27. #include <intuition/intuition.h>
  28. #ifdef AZTEC_C
  29. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  30. #endif
  31. #include "intuisup.h"
  32.  
  33.     /* Defines */
  34.  
  35. #define WINDOW_WIDTH        600
  36. #define WINDOW_HEIGHT        180
  37. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL | MENUPICK)
  38. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | ACTIVATE)
  39. #define WINDOW_TITLE        (UBYTE *)" Library test "
  40.  
  41. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  42. #define OPEN_WINDOW_FLAGS    (USHORT)OPEN_WINDOW_FLAG_CENTER_SCREEN
  43.  
  44. #define MESSAGE_LEFT_EDGE    0
  45. #define MESSAGE_TOP_EDGE    (WINDOW_HEIGHT - MESSAGE_HEIGHT - 10)
  46. #define MESSAGE_WIDTH        WINDOW_WIDTH
  47. #define MESSAGE_HEIGHT        8
  48. #define MESSAGE_TEXT1        "Gadget %d text %s"
  49. #define MESSAGE_TEXT2        "Gadget %d value %ld"
  50. #define MESSAGE_TEXT3        " Menu no. %d menu item no. %d sub item no. %d selected "
  51. #define MESSAGE_TEXT_ATTR    &topaz80_attr
  52.  
  53.     /* Globals */
  54.  
  55. struct IntuitionBase  *IntuitionBase;
  56. struct Library        *IntuiSupBase;
  57.  
  58.     /* Statics */
  59.  
  60. STATIC struct NewWindow  test_new_window = {
  61.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 1, WINDOW_IDCMP, WINDOW_FLAGS,
  62.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  63. };
  64. STATIC struct TextAttr  topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  65.                            FS_NORMAL, FPF_ROMFONT },
  66.             topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  67.                            FS_NORMAL, FPF_ROMFONT };
  68.     /* Defines for test gadgets */
  69.  
  70. #define TEST_GADGET_BUTTON        0
  71. #define TEST_GADGET_BUTTON_IMAGE    1
  72. #define TEST_GADGET_CHECK        2
  73. #define TEST_GADGET_MX            3
  74. #define TEST_GADGET_STRING        4
  75. #define TEST_GADGET_INTEGER        5
  76. #define TEST_GADGET_SLIDER_HORIZ    6
  77. #define TEST_GADGET_SLIDER_VERT        7
  78. #define TEST_GADGET_SCROLLER_HORIZ    8
  79. #define TEST_GADGET_SCROLLER_VERT    9
  80. #define TEST_GADGET_CYCLE        10
  81. #define TEST_GADGET_COUNT        11
  82. #define TEST_GADGET_LISTVIEW        12
  83. #define TEST_GADGET_PALETTE        13
  84.  
  85. #define TEST_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  86. #define TEST_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  87. #define TEST_GADGET1_LEFT_EDGE        20
  88. #define TEST_GADGET1_TOP_EDGE        10
  89. #define TEST_GADGET1_WIDTH        ((6 + 2) * 10)
  90. #define TEST_GADGET1_HEIGHT        19
  91. #define TEST_GADGET1_TEXT        "_Button"
  92. #define TEST_GADGET1_TEXT_ATTR        &topaz60_attr
  93.  
  94. #define TEST_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  95. #define TEST_GADGET2_FLAGS        (GADGET_DATA_FLAG_BUTTON_TOGGLE | GADGET_DATA_FLAG_BUTTON_IMAGE | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  96. #define TEST_GADGET2_LEFT_EDGE        120
  97. #define TEST_GADGET2_TOP_EDGE        15
  98. #define TEST_GADGET2_WIDTH        16
  99. #define TEST_GADGET2_HEIGHT        8
  100. #define TEST_GADGET2_TEXT        "_Image"
  101. #define TEST_GADGET2_TEXT_ATTR        &topaz60_attr
  102. #define TEST_GADGET2_NORMAL_RENDER    NULL    /* (LONG)&image1 */
  103. #define TEST_GADGET2_SELECT_RENDER    (BYTE *)&image2
  104.  
  105. #define TEST_GADGET3_TYPE        GADGET_DATA_TYPE_CHECK
  106. #define TEST_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  107. #define TEST_GADGET3_LEFT_EDGE        20
  108. #define TEST_GADGET3_TOP_EDGE        33
  109. #define TEST_GADGET3_WIDTH        0
  110. #define TEST_GADGET3_HEIGHT        0
  111. #define TEST_GADGET3_TEXT        "_Check gadget"
  112. #define TEST_GADGET3_TEXT_ATTR        &topaz60_attr
  113. #define TEST_GADGET3_CHECK_STATE    1
  114.  
  115. #define TEST_GADGET4_TYPE        GADGET_DATA_TYPE_MX
  116. #define TEST_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  117. #define TEST_GADGET4_LEFT_EDGE        20
  118. #define TEST_GADGET4_TOP_EDGE        60
  119. #define TEST_GADGET4_WIDTH        0
  120. #define TEST_GADGET4_HEIGHT        0
  121. #define TEST_GADGET4_TEXT        "Mutual e_xclude gadget"
  122. #define TEST_GADGET4_TEXT_ATTR        &topaz60_attr
  123. #define TEST_GADGET4_SPACING        2
  124. #define TEST_GADGET4_ACTIVE        1
  125. #define TEST_GADGET4_TEXT_ARRAY        &mx_array[0]
  126.  
  127. #define TEST_GADGET5_TYPE        GADGET_DATA_TYPE_STRING
  128. #define TEST_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
  129. #define TEST_GADGET5_LEFT_EDGE        20
  130. #define TEST_GADGET5_TOP_EDGE        103
  131. #define TEST_GADGET5_WIDTH        68
  132. #define TEST_GADGET5_HEIGHT        0
  133. #define TEST_GADGET5_TEXT        "_String gadget"
  134. #define TEST_GADGET5_TEXT_ATTR        &topaz60_attr
  135. #define TEST_GADGET5_INPUT_LEN        10
  136. #define TEST_GADGET5_AUTO_ACTIVATE    INPUT_AUTO_ACTIVATE(TEST_GADGET_INTEGER, TEST_GADGET_INTEGER)
  137. #define TEST_GADGET5_INPUT_DEFAULT    "Test"
  138.  
  139. #define TEST_GADGET6_TYPE        GADGET_DATA_TYPE_INTEGER
  140. #define TEST_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  141. #define TEST_GADGET6_LEFT_EDGE        (20 + 14 * 10 + 8)
  142. #define TEST_GADGET6_TOP_EDGE        118
  143. #define TEST_GADGET6_WIDTH        68
  144. #define TEST_GADGET6_HEIGHT        0
  145. #define TEST_GADGET6_TEXT        "I_nteger gadget"
  146. #define TEST_GADGET6_TEXT_ATTR        &topaz60_attr
  147. #define TEST_GADGET6_INPUT_LEN        10
  148. #define TEST_GADGET6_AUTO_ACTIVATE    INPUT_AUTO_ACTIVATE(TEST_GADGET_STRING, TEST_GADGET_STRING)
  149. #define TEST_GADGET6_INPUT_DEFAULT    (BYTE *)123
  150.  
  151. #define TEST_GADGET7_TYPE        GADGET_DATA_TYPE_SLIDER
  152. #define TEST_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  153. #define TEST_GADGET7_LEFT_EDGE        20
  154. #define TEST_GADGET7_TOP_EDGE        135
  155. #define TEST_GADGET7_WIDTH        100
  156. #define TEST_GADGET7_HEIGHT        9
  157. #define TEST_GADGET7_TEXT        "S_lider gadget"
  158. #define TEST_GADGET7_TEXT_ATTR        &topaz60_attr
  159. #define TEST_GADGET7_MIN        -10
  160. #define TEST_GADGET7_MAX        10
  161. #define TEST_GADGET7_LEVEL        0
  162.  
  163. #define TEST_GADGET8_TYPE        GADGET_DATA_TYPE_SLIDER
  164. #define TEST_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_BELOW)
  165. #define TEST_GADGET8_LEFT_EDGE        390
  166. #define TEST_GADGET8_TOP_EDGE        10
  167. #define TEST_GADGET8_WIDTH        18
  168. #define TEST_GADGET8_HEIGHT        50
  169. #define TEST_GADGET8_TEXT        "Sli_der gadget"
  170. #define TEST_GADGET8_TEXT_ATTR        &topaz60_attr
  171. #define TEST_GADGET8_MIN        -10
  172. #define TEST_GADGET8_MAX        10
  173. #define TEST_GADGET8_LEVEL        0
  174.  
  175. #define TEST_GADGET9_TYPE        GADGET_DATA_TYPE_SCROLLER
  176. #define TEST_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
  177. #define TEST_GADGET9_LEFT_EDGE        (20 + 15 * 10 + 8)
  178. #define TEST_GADGET9_TOP_EDGE        148
  179. #define TEST_GADGET9_WIDTH        100
  180. #define TEST_GADGET9_HEIGHT        0
  181. #define TEST_GADGET9_TEXT        "Scr_oller gadget"
  182. #define TEST_GADGET9_TEXT_ATTR        &topaz60_attr
  183. #define TEST_GADGET9_VISIBLE        4
  184. #define TEST_GADGET9_TOTAL        20
  185. #define TEST_GADGET9_TOP        (BYTE *)10
  186.  
  187. #define TEST_GADGET10_TYPE        GADGET_DATA_TYPE_SCROLLER
  188. #define TEST_GADGET10_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
  189. #define TEST_GADGET10_LEFT_EDGE        490
  190. #define TEST_GADGET10_TOP_EDGE        24
  191. #define TEST_GADGET10_WIDTH        0
  192. #define TEST_GADGET10_HEIGHT        50
  193. #define TEST_GADGET10_TEXT        "Sc_roller gadget"
  194. #define TEST_GADGET10_TEXT_ATTR        &topaz60_attr
  195. #define TEST_GADGET10_VISIBLE        4
  196. #define TEST_GADGET10_TOTAL        20
  197. #define TEST_GADGET10_TOP        (BYTE *)10
  198.  
  199. #define TEST_GADGET11_TYPE        GADGET_DATA_TYPE_CYCLE
  200. #define TEST_GADGET11_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
  201. #define TEST_GADGET11_LEFT_EDGE        265
  202. #define TEST_GADGET11_TOP_EDGE        78
  203. #define TEST_GADGET11_WIDTH        160
  204. #define TEST_GADGET11_HEIGHT        15
  205. #define TEST_GADGET11_TEXT        "C_ycle gadget"
  206. #define TEST_GADGET11_TEXT_ATTR        &topaz60_attr
  207. #define TEST_GADGET11_SPACING        1
  208. #define TEST_GADGET11_ACTIVE        2
  209. #define TEST_GADGET11_TEXT_ARRAY    &cycle_array[0]
  210.  
  211. #define TEST_GADGET12_TYPE        GADGET_DATA_TYPE_COUNT
  212. #define TEST_GADGET12_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  213. #define TEST_GADGET12_LEFT_EDGE        325
  214. #define TEST_GADGET12_TOP_EDGE        96
  215. #define TEST_GADGET12_WIDTH        80
  216. #define TEST_GADGET12_HEIGHT        12
  217. #define TEST_GADGET12_TEXT        "Co_unt gadget"
  218. #define TEST_GADGET12_TEXT_ATTR        &topaz80_attr
  219. #define TEST_GADGET12_MIN        100
  220. #define TEST_GADGET12_MAX        1000
  221. #define TEST_GADGET12_VALUE        (BYTE *)600
  222.  
  223. #define TEST_GADGET13_TYPE        GADGET_DATA_TYPE_LISTVIEW
  224. #define TEST_GADGET13_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2 | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED | GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR)
  225. #define TEST_GADGET13_LEFT_EDGE        370
  226. #define TEST_GADGET13_TOP_EDGE        126
  227. #define TEST_GADGET13_WIDTH        104
  228. #define TEST_GADGET13_HEIGHT        35
  229. #define TEST_GADGET13_TEXT        "List _view gadget"
  230. #define TEST_GADGET13_TEXT_ATTR        &topaz60_attr
  231. #define TEST_GADGET13_SPACING        0
  232. #define TEST_GADGET13_TOP        0
  233. #define TEST_GADGET13_LIST        (BYTE *)&test_list
  234.  
  235. #define TEST_GADGET14_TYPE        GADGET_DATA_TYPE_PALETTE
  236. #define TEST_GADGET14_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
  237. #define TEST_GADGET14_LEFT_EDGE        220
  238. #define TEST_GADGET14_TOP_EDGE        23
  239. #define TEST_GADGET14_WIDTH        150
  240. #define TEST_GADGET14_HEIGHT        20
  241. #define TEST_GADGET14_TEXT        "_Palette gadget"
  242. #define TEST_GADGET14_TEXT_ATTR        &topaz60_attr
  243. #define TEST_GADGET14_DEPTH        2
  244. #define TEST_GADGET14_COLOR_OFFSET    0
  245. #define TEST_GADGET14_ACTIVE_COLOR    (BYTE *)0
  246.  
  247.     /* Statics for test gadgets */
  248.  
  249. STATIC UWORD image1_data[] = {
  250.     0xffff, 0x8000, 0xbff0, 0xa00c, 0xa00c, 0xbff0, 0x8000, 0x8000,
  251.     0x0000, 0x0001, 0x0005, 0x1ff1, 0x1ff1, 0x0005, 0x0001, 0x7fff
  252. };
  253. STATIC struct Image  image1 = { 0, 0, 16, 8, 2, &image1_data[0], 3, 0, NULL };
  254. STATIC UWORD image2_data[] = {
  255.     0x0000, 0x000f, 0x3fff, 0x23fd, 0x3fcd, 0x7ff1, 0x7001, 0x7fff,
  256.     0xffff, 0x800e, 0x807e, 0x9ff8, 0x9ff0, 0xfe04, 0xf000, 0x8000
  257. };
  258. STATIC struct Image  image2 = { 0, 0, 16, 8, 2, &image2_data[0], 3, 0, NULL };
  259. STATIC BYTE *mx_array[] = {
  260.     "Fast File System", "Old File System", "Custom File System", NULL
  261. };
  262. STATIC BYTE *cycle_array[] = {
  263.     "Amiga", "Workbench", "AmigaDOS", "Multitasking", "CLI", "ARexx",
  264.     "TeX", "Unix", NULL
  265. };
  266. STATIC BYTE *list_array[] = {
  267.     "\001Amiga", "Workbench", "\001AmigaDOS", "Multitasking", "\001CLI",
  268.     "ARexx", "\001TeX", "Unix", NULL
  269. };
  270. STATIC struct List  test_list;
  271. STATIC struct GadgetData  test_gadget_data[] = {
  272.    {
  273.     TEST_GADGET1_TYPE,        /* gd_Type */
  274.     TEST_GADGET1_FLAGS,        /* gd_Flags */
  275.     TEST_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  276.     TEST_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  277.     TEST_GADGET1_WIDTH,        /* gd_Width */
  278.     TEST_GADGET1_HEIGHT,        /* gd_Height */
  279.     TEST_GADGET1_TEXT,        /* *gd_Text */
  280.     TEST_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  281.     { 0, 0, 0 }
  282.    }, {
  283.     TEST_GADGET2_TYPE,        /* gd_Type */
  284.     TEST_GADGET2_FLAGS,        /* gd_Flags */
  285.     TEST_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  286.     TEST_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  287.     TEST_GADGET2_WIDTH,        /* gd_Width */
  288.     TEST_GADGET2_HEIGHT,        /* gd_Height */
  289.     TEST_GADGET2_TEXT,        /* *gd_Text */
  290.     TEST_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  291.     { 0,
  292.     TEST_GADGET2_NORMAL_RENDER,    /* gd_ButtonNormalRender */
  293.     TEST_GADGET2_SELECT_RENDER    /* gd_ButtonSelectRender */
  294.     }
  295.    }, {
  296.     TEST_GADGET3_TYPE,        /* gd_Type */
  297.     TEST_GADGET3_FLAGS,        /* gd_Flags */
  298.     TEST_GADGET3_LEFT_EDGE,        /* gd_LeftEdge */
  299.     TEST_GADGET3_TOP_EDGE,        /* gd_TopEdge */
  300.     TEST_GADGET3_WIDTH,        /* gd_Width */
  301.     TEST_GADGET3_HEIGHT,        /* gd_Height */
  302.     TEST_GADGET3_TEXT,        /* *gd_Text */
  303.     TEST_GADGET3_TEXT_ATTR,        /* *gd_TextAttr */
  304.     {
  305.     TEST_GADGET3_CHECK_STATE,    /* gd_CheckState */
  306.     0, 0 }
  307.    }, {
  308.     TEST_GADGET4_TYPE,        /* gd_Type */
  309.     TEST_GADGET4_FLAGS,        /* gd_Flags */
  310.     TEST_GADGET4_LEFT_EDGE,        /* gd_LeftEdge */
  311.     TEST_GADGET4_TOP_EDGE,        /* gd_TopEdge */
  312.     TEST_GADGET4_WIDTH,        /* gd_Width */
  313.     TEST_GADGET4_HEIGHT,        /* gd_Height */
  314.     TEST_GADGET4_TEXT,        /* *gd_Text */
  315.     TEST_GADGET4_TEXT_ATTR,        /* *gd_TextAttr */
  316.     {
  317.     TEST_GADGET4_SPACING,        /* gd_MXSpacing */
  318.     TEST_GADGET4_ACTIVE,        /* gd_MXActiveEntry */
  319.     TEST_GADGET4_TEXT_ARRAY        /* gd_MXTextArray */
  320.     }
  321.    }, {
  322.     TEST_GADGET5_TYPE,        /* gd_Type */
  323.     TEST_GADGET5_FLAGS,        /* gd_Flags */
  324.     TEST_GADGET5_LEFT_EDGE,        /* gd_LeftEdge */
  325.     TEST_GADGET5_TOP_EDGE,        /* gd_TopEdge */
  326.     TEST_GADGET5_WIDTH,        /* gd_Width */
  327.     TEST_GADGET5_HEIGHT,        /* gd_Height */
  328.     TEST_GADGET5_TEXT,        /* *gd_Text */
  329.     TEST_GADGET5_TEXT_ATTR,        /* *gd_TextAttr */
  330.     {
  331.     TEST_GADGET5_INPUT_LEN,        /* gd_InputLen */
  332.     TEST_GADGET5_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  333.     TEST_GADGET5_INPUT_DEFAULT    /* gd_InputDefault */
  334.     }
  335.    }, {
  336.     TEST_GADGET6_TYPE,        /* gd_Type */
  337.     TEST_GADGET6_FLAGS,        /* gd_Flags */
  338.     TEST_GADGET6_LEFT_EDGE,        /* gd_LeftEdge */
  339.     TEST_GADGET6_TOP_EDGE,        /* gd_TopEdge */
  340.     TEST_GADGET6_WIDTH,        /* gd_Width */
  341.     TEST_GADGET6_HEIGHT,        /* gd_Height */
  342.     TEST_GADGET6_TEXT,        /* *gd_Text */
  343.     TEST_GADGET6_TEXT_ATTR,        /* *gd_TextAttr */
  344.     {
  345.     TEST_GADGET6_INPUT_LEN,        /* gd_InputLen */
  346.     TEST_GADGET6_AUTO_ACTIVATE,    /* gd_InputActivatePrev/Next */
  347.     TEST_GADGET6_INPUT_DEFAULT    /* gd_InputDefault */
  348.     }
  349.    }, {
  350.     TEST_GADGET7_TYPE,        /* gd_Type */
  351.     TEST_GADGET7_FLAGS,        /* gd_Flags */
  352.     TEST_GADGET7_LEFT_EDGE,        /* gd_LeftEdge */
  353.     TEST_GADGET7_TOP_EDGE,        /* gd_TopEdge */
  354.     TEST_GADGET7_WIDTH,        /* gd_Width */
  355.     TEST_GADGET7_HEIGHT,        /* gd_Height */
  356.     TEST_GADGET7_TEXT,        /* *gd_Text */
  357.     TEST_GADGET7_TEXT_ATTR,        /* *gd_TextAttr */
  358.     {
  359.     TEST_GADGET7_MIN,        /* gd_SliderMin */
  360.     TEST_GADGET7_MAX,        /* gd_SliderMax */
  361.     TEST_GADGET7_LEVEL        /* gd_SliderLevel */
  362.     }
  363.    }, {
  364.     TEST_GADGET8_TYPE,        /* gd_Type */
  365.     TEST_GADGET8_FLAGS,        /* gd_Flags */
  366.     TEST_GADGET8_LEFT_EDGE,        /* gd_LeftEdge */
  367.     TEST_GADGET8_TOP_EDGE,        /* gd_TopEdge */
  368.     TEST_GADGET8_WIDTH,        /* gd_Width */
  369.     TEST_GADGET8_HEIGHT,        /* gd_Height */
  370.     TEST_GADGET8_TEXT,        /* *gd_Text */
  371.     TEST_GADGET8_TEXT_ATTR,        /* *gd_TextAttr */
  372.     {
  373.     TEST_GADGET8_MIN,        /* gd_SliderMin */
  374.     TEST_GADGET8_MAX,        /* gd_SliderMax */
  375.     TEST_GADGET8_LEVEL        /* gd_SliderLevel */
  376.     }
  377.    }, {
  378.     TEST_GADGET9_TYPE,        /* gd_Type */
  379.     TEST_GADGET9_FLAGS,        /* gd_Flags */
  380.     TEST_GADGET9_LEFT_EDGE,        /* gd_LeftEdge */
  381.     TEST_GADGET9_TOP_EDGE,        /* gd_TopEdge */
  382.     TEST_GADGET9_WIDTH,        /* gd_Width */
  383.     TEST_GADGET9_HEIGHT,        /* gd_Height */
  384.     TEST_GADGET9_TEXT,        /* *gd_Text */
  385.     TEST_GADGET9_TEXT_ATTR,        /* *gd_TextAttr */
  386.     {
  387.     TEST_GADGET9_VISIBLE,        /* gd_ScrollerVisible */
  388.     TEST_GADGET9_TOTAL,        /* gd_ScrollerTotal */
  389.     TEST_GADGET9_TOP        /* gd_ScrollerTop */
  390.     }
  391.    }, {
  392.     TEST_GADGET10_TYPE,        /* gd_Type */
  393.     TEST_GADGET10_FLAGS,        /* gd_Flags */
  394.     TEST_GADGET10_LEFT_EDGE,    /* gd_LeftEdge */
  395.     TEST_GADGET10_TOP_EDGE,        /* gd_TopEdge */
  396.     TEST_GADGET10_WIDTH,        /* gd_Width */
  397.     TEST_GADGET10_HEIGHT,        /* gd_Height */
  398.     TEST_GADGET10_TEXT,        /* *gd_Text */
  399.     TEST_GADGET10_TEXT_ATTR,    /* *gd_TextAttr */
  400.     {
  401.     TEST_GADGET10_VISIBLE,        /* gd_ScrollerVisible */
  402.     TEST_GADGET10_TOTAL,        /* gd_ScrollerTotal */
  403.     TEST_GADGET10_TOP        /* gd_ScrollerTop */
  404.     }
  405.    }, {
  406.     TEST_GADGET11_TYPE,        /* gd_Type */
  407.     TEST_GADGET11_FLAGS,        /* gd_Flags */
  408.     TEST_GADGET11_LEFT_EDGE,    /* gd_LeftEdge */
  409.     TEST_GADGET11_TOP_EDGE,        /* gd_TopEdge */
  410.     TEST_GADGET11_WIDTH,        /* gd_Width */
  411.     TEST_GADGET11_HEIGHT,        /* gd_Height */
  412.     TEST_GADGET11_TEXT,        /* *gd_Text */
  413.     TEST_GADGET11_TEXT_ATTR,    /* *gd_TextAttr */
  414.     {
  415.     TEST_GADGET11_SPACING,        /* gd_CycleSpacing */
  416.     TEST_GADGET11_ACTIVE,        /* gd_CycleActive */
  417.     TEST_GADGET11_TEXT_ARRAY    /* gd_CycleTextArray */
  418.     }
  419.    }, {
  420.     TEST_GADGET12_TYPE,        /* gd_Type */
  421.     TEST_GADGET12_FLAGS,        /* gd_Flags */
  422.     TEST_GADGET12_LEFT_EDGE,    /* gd_LeftEdge */
  423.     TEST_GADGET12_TOP_EDGE,        /* gd_TopEdge */
  424.     TEST_GADGET12_WIDTH,        /* gd_Width */
  425.     TEST_GADGET12_HEIGHT,        /* gd_Height */
  426.     TEST_GADGET12_TEXT,        /* *gd_Text */
  427.     TEST_GADGET12_TEXT_ATTR,    /* *gd_TextAttr */
  428.     {
  429.     TEST_GADGET12_MIN,        /* gd_CountMin */
  430.     TEST_GADGET12_MAX,        /* gd_CountMax */
  431.     TEST_GADGET12_VALUE        /* gd_CountValue */
  432.     }
  433.    }, {
  434.     TEST_GADGET13_TYPE,        /* gd_Type */
  435.     TEST_GADGET13_FLAGS,        /* gd_Flags */
  436.     TEST_GADGET13_LEFT_EDGE,    /* gd_LeftEdge */
  437.     TEST_GADGET13_TOP_EDGE,        /* gd_TopEdge */
  438.     TEST_GADGET13_WIDTH,        /* gd_Width */
  439.     TEST_GADGET13_HEIGHT,        /* gd_Height */
  440.     TEST_GADGET13_TEXT,        /* *gd_Text */
  441.     TEST_GADGET13_TEXT_ATTR,    /* *gd_TextAttr */
  442.     {
  443.     TEST_GADGET13_SPACING,        /* gd_ListViewSpacing */
  444.     TEST_GADGET13_TOP,        /* gd_ListViewTop */
  445.     TEST_GADGET13_LIST        /* gd_ListViewList */
  446.     }
  447.    }, {
  448.     TEST_GADGET14_TYPE,        /* gd_Type */
  449.     TEST_GADGET14_FLAGS,        /* gd_Flags */
  450.     TEST_GADGET14_LEFT_EDGE,    /* gd_LeftEdge */
  451.     TEST_GADGET14_TOP_EDGE,        /* gd_TopEdge */
  452.     TEST_GADGET14_WIDTH,        /* gd_Width */
  453.     TEST_GADGET14_HEIGHT,        /* gd_Height */
  454.     TEST_GADGET14_TEXT,        /* *gd_Text */
  455.     TEST_GADGET14_TEXT_ATTR,    /* *gd_TextAttr */
  456.     {
  457.     TEST_GADGET14_DEPTH,        /* gd_PaletteDepth */
  458.     TEST_GADGET14_COLOR_OFFSET,    /* gd_PaletteColorOffset */
  459.     TEST_GADGET14_ACTIVE_COLOR    /* gd_PaletteActiveColor */
  460.     }
  461.    }, {
  462.     INTUISUP_DATA_END        /* end of gadget data array */
  463.    }
  464. };
  465.     /* Defines for auto request */
  466.  
  467. #define TEST1_AUTO_REQ_TITLE        " Auto Request "
  468. #define TEST1_AUTO_REQ_BODY_TEXT    "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4"
  469. #define TEST1_AUTO_REQ_POS_TEXT        "_Positive"
  470. #define TEST1_AUTO_REQ_NEG_TEXT        "_Negative"
  471. #define TEST1_AUTO_REQ_FLAGS        (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_CENTER_MOUSE | AUTO_REQ_FLAG_DRAW_RASTER)
  472.  
  473.     /* Defines for requester */
  474.  
  475. #define TEST2_REQ_WIDTH        200
  476. #define TEST2_REQ_HEIGHT    100
  477. #define TEST2_REQ_FLAGS        (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER_WINDOW | REQ_DATA_FLAG_INNER_WINDOW)
  478. #define TEST2_REQ_TITLE        " Requester "
  479.  
  480. #define TEST2_TEXT1_TYPE    TEXT_DATA_TYPE_TEXT
  481. #define TEST2_TEXT1_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
  482. #define TEST2_TEXT1_LEFT_EDGE    0
  483. #define TEST2_TEXT1_TOP_EDGE    20
  484. #define TEST2_TEXT1_TEXT    "Text Line 1"
  485. #define TEST2_TEXT1_TEXT_ATTR    &topaz60_attr
  486.  
  487. #define TEST2_TEXT2_TYPE    TEXT_DATA_TYPE_TEXT
  488. #define TEST2_TEXT2_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
  489. #define TEST2_TEXT2_LEFT_EDGE    0
  490. #define TEST2_TEXT2_TOP_EDGE    (TEST2_TEXT1_TOP_EDGE + 10)
  491. #define TEST2_TEXT2_TEXT    "Text Line 2"
  492. #define TEST2_TEXT2_TEXT_ATTR    &topaz80_attr
  493.  
  494. #define TEST2_TEXT3_TYPE    TEXT_DATA_TYPE_TEXT
  495. #define TEST2_TEXT3_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
  496. #define TEST2_TEXT3_LEFT_EDGE    0
  497. #define TEST2_TEXT3_TOP_EDGE    (TEST2_TEXT2_TOP_EDGE + 10)
  498. #define TEST2_TEXT3_TEXT    "Text Line 3"
  499. #define TEST2_TEXT3_TEXT_ATTR    &topaz80_attr
  500.  
  501. #define TEST2_BORDER1_TYPE        BORDER_DATA_TYPE_BOX2_OUT
  502. #define TEST2_BORDER1_LEFT_EDGE        20
  503. #define TEST2_BORDER1_TOP_EDGE        10
  504. #define TEST2_BORDER1_WIDTH        (TEST2_REQ_WIDTH - 2 * TEST2_BORDER1_LEFT_EDGE)
  505. #define TEST2_BORDER1_HEIGHT        (TEST2_REQ_HEIGHT - (3 * TEST2_BORDER1_TOP_EDGE + TEST2_GADGET1_HEIGHT))
  506.  
  507. #define TEST2_GADGET_CONTINUE        0
  508.  
  509. #define TEST2_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  510. #define TEST2_GADGET1_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
  511. #define TEST2_GADGET1_LEFT_EDGE        ((TEST2_REQ_WIDTH - TEST2_GADGET1_WIDTH) / 2)
  512. #define TEST2_GADGET1_TOP_EDGE        (TEST2_REQ_HEIGHT - (TEST2_GADGET1_HEIGHT + 10))
  513. #define TEST2_GADGET1_WIDTH        ((8 + 2) * 10)
  514. #define TEST2_GADGET1_HEIGHT        19
  515. #define TEST2_GADGET1_TEXT        "_Continue"
  516. #define TEST2_GADGET1_TEXT_ATTR        &topaz60_attr
  517.  
  518.     /* Statics for test borders */
  519.  
  520. STATIC struct TextData  test2_text_data[] = {
  521.    {
  522.     TEST2_TEXT1_TYPE,    /* td_Type */
  523.     TEST2_TEXT1_FLAGS,    /* td_Flags */
  524.     TEST2_TEXT1_LEFT_EDGE,    /* td_LeftEdge */
  525.     TEST2_TEXT1_TOP_EDGE,    /* td_TopEdge */
  526.     TEST2_TEXT1_TEXT,    /* *td_Text */
  527.     TEST2_TEXT1_TEXT_ATTR    /* *td_TextAttr */
  528.    }, {
  529.     TEST2_TEXT2_TYPE,    /* td_Type */
  530.     TEST2_TEXT2_FLAGS,    /* td_Flags */
  531.     TEST2_TEXT2_LEFT_EDGE,    /* td_LeftEdge */
  532.     TEST2_TEXT2_TOP_EDGE,    /* td_TopEdge */
  533.     TEST2_TEXT2_TEXT,    /* *td_Text */
  534.     TEST2_TEXT2_TEXT_ATTR    /* *td_TextAttr */
  535.    }, {
  536.     TEST2_TEXT3_TYPE,    /* td_Type */
  537.     TEST2_TEXT3_FLAGS,    /* td_Flags */
  538.     TEST2_TEXT3_LEFT_EDGE,    /* td_LeftEdge */
  539.     TEST2_TEXT3_TOP_EDGE,    /* td_TopEdge */
  540.     TEST2_TEXT3_TEXT,    /* *td_Text */
  541.     TEST2_TEXT3_TEXT_ATTR    /* *td_TextAttr */
  542.    }, {
  543.     INTUISUP_DATA_END        /* mark end of border data array */
  544.    }
  545. };
  546. STATIC struct BorderData  test2_border_data[] = {
  547.    {
  548.     TEST2_BORDER1_TYPE,        /* bd_Type */
  549.     TEST2_BORDER1_LEFT_EDGE,    /* bd_LeftEdge */
  550.     TEST2_BORDER1_TOP_EDGE,        /* bd_TopEdge */
  551.     TEST2_BORDER1_WIDTH,        /* bd_Width */
  552.     TEST2_BORDER1_HEIGHT        /* bd_Height */
  553.    }, {
  554.     INTUISUP_DATA_END        /* mark end of border data array */
  555.    }
  556. };
  557. STATIC struct GadgetData  test2_gadget_data[] = {
  558.    {
  559.     TEST2_GADGET1_TYPE,        /* gd_Type */
  560.     TEST2_GADGET1_FLAGS,        /* gd_Flags */
  561.     TEST2_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  562.     TEST2_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  563.     TEST2_GADGET1_WIDTH,        /* gd_Width */
  564.     TEST2_GADGET1_HEIGHT,        /* gd_Height */
  565.     TEST2_GADGET1_TEXT,        /* *gd_Text */
  566.     TEST2_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  567.     { 0, 0, 0 }
  568.    }, {
  569.     INTUISUP_DATA_END        /* mark end of border data array */
  570.    }
  571. };
  572. STATIC struct RequesterData  test2_requester_data = {
  573.     0,            /* rd_LeftEdge */
  574.     0,            /* rd_TopEdge */
  575.     TEST2_REQ_WIDTH,    /* rd_Width */
  576.     TEST2_REQ_HEIGHT,    /* rd_Height */
  577.     TEST2_REQ_FLAGS,    /* rd_Flags */
  578.     TEST2_REQ_TITLE,    /* *rd_Title */
  579.     &test2_text_data[0],    /* *rd_Texts */
  580.     &test2_border_data[0],    /* *rd_Borders */
  581.     &test2_gadget_data[0]    /* *rd_Gadgets */
  582. };
  583.     /* Defines for test menus */
  584.  
  585. #define TEST_MENU_TEXT_ATTR    &topaz60_attr
  586.  
  587.     /* Statics for test menus */
  588.  
  589. STATIC struct MenuData  test_menu_data[] = {
  590.    {
  591.     MENU_DATA_TYPE_TITLE, 0, "Menu 0", NULL, 0
  592.    }, {
  593.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE | MENU_DATA_FLAG_SELECTED, "Item 0.0", "0", ~(1L << 0)
  594.    }, {
  595.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE, "Item 0.1", "1", ~(1L << 1)
  596.    }, {
  597.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 0.2", NULL, 0
  598.    }, {
  599.           MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.0", "A", 0
  600.    }, {
  601.           MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.1", "B", 0
  602.    }, {
  603.        MENU_DATA_TYPE_ITEM, 0, "Item 0.3", NULL, 0
  604.    }, {
  605.     MENU_DATA_TYPE_TITLE,  0, "Menu 1", NULL, 0
  606.    }, {
  607.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 1.0", "C", 0
  608.    }, {
  609.        MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.1", "D", 0
  610.    }, {
  611.        MENU_DATA_TYPE_ITEM, 0, "Item 1.2", NULL, 0
  612.    }, {
  613.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.0", "E", 0
  614.    }, {
  615.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.1", "F", 0
  616.    }, {
  617.        MENU_DATA_TYPE_ITEM, 0, "Item 1.3", NULL, 0
  618.    }, {
  619.           MENU_DATA_TYPE_SUBITEM, 0, "Item 1.3.0", "G", 0
  620.    }, {
  621.           MENU_DATA_TYPE_SUBITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.3.1", "H", 0
  622.    }, {
  623.        MENU_DATA_TYPE_ITEM, 0, "Item 1.4", "I", 0
  624.    }, {
  625.     INTUISUP_DATA_END        /* mark end of menu data */
  626.    }
  627. };
  628.     /* Prototypes */
  629.  
  630. VOID test_action(APTR ri, struct Window  *win, APTR gl, APTR ml);
  631. BOOL build_test_list(VOID);
  632. VOID free_test_list(VOID);
  633.  
  634.     /* Library test */
  635.  
  636.    LONG
  637. main(VOID)
  638. {
  639.    struct Window  *win;
  640.    APTR ri, gl, ml;
  641.  
  642.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  643.       if (IntuiSupBase = OpenLibrary(IntuiSupName, IntuiSupVersion)) {
  644.      if (build_test_list() == TRUE) {
  645.         if (ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) {
  646.            if (win = IOpenWindow(ri, &test_new_window,
  647.                                OPEN_WINDOW_FLAGS)) {
  648.           test_gadget_data[TEST_GADGET_BUTTON_IMAGE].gd_SpecialData.gd_ButtonData.gd_ButtonNormalRender = &image1;
  649.           if (gl = ICreateGadgets(ri, &test_gadget_data[0], 0, 0,
  650.                                     NULL)) {
  651.              if (ml = ICreateMenu(ri, win, &test_menu_data[0],
  652.                            TEST_MENU_TEXT_ATTR, NULL)) {
  653.             IDisplayGadgets(win, gl);
  654.             IAttachMenu(win, ml);
  655.             test_action(ri, win, gl, ml);
  656.             IRemoveMenu(ml);
  657.             IRemoveGadgets(gl);
  658.             IFreeMenu(ml);
  659.              }
  660.              IFreeGadgets(gl);
  661.           }
  662.           ICloseWindow(win, FALSE);
  663.            }
  664.            IFreeRenderInfo(ri);
  665.         }
  666.         free_test_list();
  667.      }
  668.      CloseLibrary(IntuiSupBase);
  669.       }
  670.       CloseLibrary(IntuitionBase);
  671.    }
  672.    return(0L);
  673. }
  674.     /* Perform IDCMP action */
  675.  
  676.    VOID
  677. test_action(APTR ri, struct Window  *win, APTR gl, APTR ml)
  678. {
  679.    struct MsgPort  *up = win->UserPort;
  680.    BOOL input = TRUE, keepon2 = TRUE;
  681.  
  682.    /* Waiting for close window event */
  683.    do {
  684.       struct IntuiMessage  *msg2;
  685.  
  686.       WaitPort(up);
  687.       while (msg2 = IGetMsg(up)) {
  688.      BYTE   *format, buffer[80];
  689.      USHORT code = msg2->Code;
  690.  
  691.      switch (msg2->Class) {
  692.         case CLOSEWINDOW :
  693.            keepon2 = FALSE;
  694.            break;
  695.  
  696.         case ISUP_ID :
  697.            if (code == TEST_GADGET_STRING) {
  698.           format = MESSAGE_TEXT1;
  699.            } else {
  700.           format = MESSAGE_TEXT2;
  701.            }
  702.            sprintf(&buffer[0], format, code, msg2->IAddress);
  703.            IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  704.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  705.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  706.            IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  707.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  708.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  709.            /* Change gadgets */
  710.            switch (code) {
  711.           case TEST_GADGET_CHECK :
  712.              if (msg2->IAddress) {
  713.             ISetGadgetAttributes(gl, TEST_GADGET_LISTVIEW,
  714.                           GADGET_DATA_FLAG_DISABLED, 0L,
  715.                 USE_CURRENT_VALUE, (ULONG)TEST_GADGET13_TOP,
  716.                         (VOID *)TEST_GADGET13_LIST);
  717.              } else {
  718.             ISetGadgetAttributes(gl, TEST_GADGET_LISTVIEW,
  719.                           GADGET_DATA_FLAG_DISABLED,
  720.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  721.                        USE_CURRENT_VALUE, (VOID *)NULL);
  722.              }
  723.              break;
  724.  
  725.           case TEST_GADGET_BUTTON :
  726.              if (input == FALSE) {
  727.             ISetGadgetAttributes(gl, TEST_GADGET_INTEGER,
  728.                GADGET_DATA_FLAG_DISABLED, 0L, USE_CURRENT_VALUE,
  729.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  730.             input = TRUE;
  731.              } else {
  732.             ISetGadgetAttributes(gl, TEST_GADGET_INTEGER,
  733.                           GADGET_DATA_FLAG_DISABLED,
  734.                    GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
  735.                   USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
  736.             input = FALSE;
  737.              }
  738.              break;
  739.  
  740.           case TEST_GADGET_BUTTON_IMAGE :
  741.              if (msg2->IAddress) {
  742.             IAutoRequest(win, TEST1_AUTO_REQ_TITLE,
  743.                            TEST1_AUTO_REQ_BODY_TEXT,
  744.                             TEST1_AUTO_REQ_POS_TEXT,
  745.                         TEST1_AUTO_REQ_NEG_TEXT, 0L, 0L,
  746.                         TEST1_AUTO_REQ_FLAGS, NULL);
  747.              } else {
  748.             APTR rl;
  749.  
  750.             if (rl = IDisplayRequester(win,
  751.                          &test2_requester_data, NULL)) {
  752.                BOOL keepon1 = TRUE;
  753.  
  754.                do {
  755.                   struct IntuiMessage  *msg1;
  756.  
  757.                   WaitPort(up);
  758.                   while (msg1 = IGetMsg(up)) {
  759.                  if (msg1->Class == ISUP_ID) {
  760.                     keepon1 = FALSE;
  761.                  }
  762.                  IReplyMsg(msg1);
  763.                   }
  764.                } while (keepon1 == TRUE);
  765.                IRemoveRequester(rl);
  766.             }
  767.              }
  768.              break;
  769.            }
  770.            break;
  771.  
  772.         case MENUPICK :
  773.            while (code != MENUNULL) {
  774.           sprintf(&buffer[0], MESSAGE_TEXT3,
  775.                   (MENUNUM(code) != NOMENU ? MENUNUM(code) : 0),
  776.                   (ITEMNUM(code) != NOITEM ? ITEMNUM(code) : 0),
  777.                 (SUBNUM(code) != NOSUB ? SUBNUM(code) : 0));
  778.           IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
  779.                       MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
  780.                   MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
  781.           IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
  782.                 TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
  783.                   TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
  784.           code = IMenuItemAddress(ml, code)->NextSelect;
  785.            }
  786.            break;
  787.      }
  788.      IReplyMsg(msg2);
  789.       }
  790.    } while (keepon2 == TRUE);
  791. }
  792.     /* Build test list */
  793.  
  794.    BOOL
  795. build_test_list(VOID)
  796. {
  797.    struct List  *list = &test_list;
  798.    BYTE *text, **ptr = &list_array[0];
  799.    BOOL success = TRUE;
  800.  
  801.    NewList(list);
  802.    while (text = *ptr++) {
  803.       struct Node  *node;
  804.  
  805.       if (node = AllocMem((LONG)sizeof(struct Node),
  806.                       (LONG)MEMF_PUBLIC | MEMF_CLEAR)) {
  807.      node->ln_Name = text;
  808.      AddTail(list, node);
  809.       } else {
  810.      free_test_list();
  811.      success = FALSE;
  812.      break;
  813.       }
  814.    }
  815.    return(success);
  816. }
  817.     /* Free test list */
  818.  
  819.    VOID
  820. free_test_list(VOID)
  821. {
  822.    struct List  *list = &test_list;
  823.    struct Node  *node;
  824.  
  825.    while (node = RemHead(list)) {
  826.       FreeMem(node, (LONG)sizeof(struct Node));
  827.    }
  828. }
  829.